#pragma once

#define MOVEMENT_TYPE_NONE                             0x0
#define MOVEMENT_TYPE_LOOK_AROUND                      0x1
#define MOVEMENT_TYPE_WANDER_AROUND                    0x2
#define MOVEMENT_TYPE_WANDER_UP_AND_DOWN               0x3
#define MOVEMENT_TYPE_WANDER_DOWN_AND_UP               0x4
#define MOVEMENT_TYPE_WANDER_LEFT_AND_RIGHT            0x5
#define MOVEMENT_TYPE_WANDER_RIGHT_AND_LEFT            0x6
#define MOVEMENT_TYPE_FACE_UP                          0x7
#define MOVEMENT_TYPE_FACE_DOWN                        0x8
#define MOVEMENT_TYPE_FACE_LEFT                        0x9
#define MOVEMENT_TYPE_FACE_RIGHT                       0xA
#define MOVEMENT_TYPE_PLAYER                           0xB
#define MOVEMENT_TYPE_BERRY_TREE_GROWTH                0xC
#define MOVEMENT_TYPE_FACE_DOWN_AND_UP                 0xD
#define MOVEMENT_TYPE_FACE_LEFT_AND_RIGHT              0xE
#define MOVEMENT_TYPE_FACE_UP_AND_LEFT                 0xF
#define MOVEMENT_TYPE_FACE_UP_AND_RIGHT                0x10
#define MOVEMENT_TYPE_FACE_DOWN_AND_LEFT               0x11
#define MOVEMENT_TYPE_FACE_DOWN_AND_RIGHT              0x12
#define MOVEMENT_TYPE_FACE_DOWN_UP_AND_LEFT            0x13
#define MOVEMENT_TYPE_FACE_DOWN_UP_AND_RIGHT           0x14
#define MOVEMENT_TYPE_FACE_UP_LEFT_AND_RIGHT           0x15
#define MOVEMENT_TYPE_FACE_DOWN_LEFT_AND_RIGHT         0x16
#define MOVEMENT_TYPE_ROTATE_COUNTERCLOCKWISE          0x17
#define MOVEMENT_TYPE_ROTATE_CLOCKWISE                 0x18
#define MOVEMENT_TYPE_WALK_UP_AND_DOWN                 0x19
#define MOVEMENT_TYPE_WALK_DOWN_AND_UP                 0x1A
#define MOVEMENT_TYPE_WALK_LEFT_AND_RIGHT              0x1B
#define MOVEMENT_TYPE_WALK_RIGHT_AND_LEFT              0x1C
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_LEFT_DOWN 0x1D
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_DOWN_UP 0x1E
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_RIGHT_LEFT 0x1F
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_UP_RIGHT 0x20
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_RIGHT_DOWN 0x21
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_DOWN_UP 0x22
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_UP_LEFT_RIGHT 0x23
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_UP_LEFT 0x24
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_DOWN_RIGHT 0x25
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_RIGHT_LEFT 0x26
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_LEFT_UP_DOWN 0x27
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_LEFT_UP 0x28
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_DOWN_LEFT 0x29
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_DOWN_LEFT_RIGHT 0x2A
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_RIGHT_UP_DOWN 0x2B
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_RIGHT_UP 0x2C
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_LEFT_DOWN_RIGHT 0x2D
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_RIGHT_UP_LEFT 0x2E
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_DOWN_RIGHT_UP 0x2F
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_UP_LEFT_DOWN 0x30
#define MOVEMENT_TYPE_WALK_SEQUENCE_UP_RIGHT_DOWN_LEFT 0x31
#define MOVEMENT_TYPE_WALK_SEQUENCE_DOWN_LEFT_UP_RIGHT 0x32
#define MOVEMENT_TYPE_WALK_SEQUENCE_LEFT_UP_RIGHT_DOWN 0x33
#define MOVEMENT_TYPE_WALK_SEQUENCE_RIGHT_DOWN_LEFT_UP 0x34
#define MOVEMENT_TYPE_COPY_PLAYER                      0x35
#define MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE             0x36
#define MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE     0x37
#define MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE            0x38
#define MOVEMENT_TYPE_TREE_DISGUISE                    0x39
#define MOVEMENT_TYPE_MOUNTAIN_DISGUISE                0x3A
#define MOVEMENT_TYPE_COPY_PLAYER_IN_GRASS             0x3B
#define MOVEMENT_TYPE_COPY_PLAYER_OPPOSITE_IN_GRASS    0x3C
#define MOVEMENT_TYPE_COPY_PLAYER_COUNTERCLOCKWISE_IN_GRASS 0x3D
#define MOVEMENT_TYPE_COPY_PLAYER_CLOCKWISE_IN_GRASS   0x3E
#define MOVEMENT_TYPE_HIDDEN                           0x3F
#define MOVEMENT_TYPE_WALK_IN_PLACE_DOWN               0x40
#define MOVEMENT_TYPE_WALK_IN_PLACE_UP                 0x41
#define MOVEMENT_TYPE_WALK_IN_PLACE_LEFT               0x42
#define MOVEMENT_TYPE_WALK_IN_PLACE_RIGHT              0x43
#define MOVEMENT_TYPE_JOG_IN_PLACE_DOWN                0x44
#define MOVEMENT_TYPE_JOG_IN_PLACE_UP                  0x45
#define MOVEMENT_TYPE_JOG_IN_PLACE_LEFT                0x46
#define MOVEMENT_TYPE_JOG_IN_PLACE_RIGHT               0x47
#define MOVEMENT_TYPE_RUN_IN_PLACE_DOWN                0x48
#define MOVEMENT_TYPE_RUN_IN_PLACE_UP                  0x49
#define MOVEMENT_TYPE_RUN_IN_PLACE_LEFT                0x4A
#define MOVEMENT_TYPE_RUN_IN_PLACE_RIGHT               0x4B
#define MOVEMENT_TYPE_INVISIBLE                        0x4C
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_DOWN        0x4D
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_UP          0x4E
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_LEFT        0x4F
#define MOVEMENT_TYPE_WALK_SLOWLY_IN_PLACE_RIGHT       0x50

//XSE Movement Commands
#define MOVEMENT_ACTION_FACE_DOWN                       0x0
#define MOVEMENT_ACTION_FACE_UP                         0x1
#define MOVEMENT_ACTION_FACE_LEFT                       0x2
#define MOVEMENT_ACTION_FACE_RIGHT                      0x3
#define MOVEMENT_ACTION_FACE_DOWN_FAST                  0x4
#define MOVEMENT_ACTION_FACE_UP_FAST                    0x5
#define MOVEMENT_ACTION_FACE_LEFT_FAST                  0x6
#define MOVEMENT_ACTION_FACE_RIGHT_FAST                 0x7
#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN               0x8
#define MOVEMENT_ACTION_WALK_SLOWEST_UP                 0x9
#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT               0xA
#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT              0xB
#define MOVEMENT_ACTION_WALK_SLOW_DOWN                  0xC
#define MOVEMENT_ACTION_WALK_SLOW_UP                    0xD
#define MOVEMENT_ACTION_WALK_SLOW_LEFT                  0xE
#define MOVEMENT_ACTION_WALK_SLOW_RIGHT                 0xF
#define MOVEMENT_ACTION_WALK_NORMAL_DOWN                0x10
#define MOVEMENT_ACTION_WALK_NORMAL_UP                  0x11
#define MOVEMENT_ACTION_WALK_NORMAL_LEFT                0x12
#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT               0x13
#define MOVEMENT_ACTION_JUMP_2_DOWN                     0x14
#define MOVEMENT_ACTION_JUMP_2_UP                       0x15
#define MOVEMENT_ACTION_JUMP_2_LEFT                     0x16
#define MOVEMENT_ACTION_JUMP_2_RIGHT                    0x17
#define MOVEMENT_ACTION_DELAY_1                         0x18
#define MOVEMENT_ACTION_DELAY_2                         0x19
#define MOVEMENT_ACTION_DELAY_4                         0x1A
#define MOVEMENT_ACTION_DELAY_8                         0x1B
#define MOVEMENT_ACTION_DELAY_16                        0x1C
#define MOVEMENT_ACTION_WALK_FAST_DOWN                  0x1D
#define MOVEMENT_ACTION_WALK_FAST_UP                    0x1E
#define MOVEMENT_ACTION_WALK_FAST_LEFT                  0x1F
#define MOVEMENT_ACTION_WALK_FAST_RIGHT                 0x20
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_DOWN       0x21
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_UP         0x22
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_LEFT       0x23
#define MOVEMENT_ACTION_WALK_IN_PLACE_NORMAL_RIGHT      0x24
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_DOWN         0x25
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_UP           0x26
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_LEFT         0x27
#define MOVEMENT_ACTION_WALK_IN_PLACE_FAST_RIGHT        0x28
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_DOWN      0x29
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_UP        0x2A
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_LEFT      0x2B
#define MOVEMENT_ACTION_WALK_IN_PLACE_FASTEST_RIGHT     0x2C

#define MOVEMENT_ACTION_SLIDE_SLOW_DOWN                 0x31
#define MOVEMENT_ACTION_SLIDE_SLOW_UP                   0x32
#define MOVEMENT_ACTION_SLIDE_SLOW_LEFT                 0x33
#define MOVEMENT_ACTION_SLIDE_SLOW_RIGHT                0x34
#define MOVEMENT_ACTION_SLIDE_DOWN                      0x35
#define MOVEMENT_ACTION_SLIDE_UP                        0x36
#define MOVEMENT_ACTION_SLIDE_LEFT                      0x37
#define MOVEMENT_ACTION_SLIDE_RIGHT                     0x38
#define MOVEMENT_ACTION_SLIDE_FAST_DOWN                 0x39
#define MOVEMENT_ACTION_SLIDE_FAST_UP                   0x3A
#define MOVEMENT_ACTION_SLIDE_FAST_LEFT                 0x3B
#define MOVEMENT_ACTION_SLIDE_FAST_RIGHT                0x3C
#define MOVEMENT_ACTION_SLIDE_RIGHT_FOOT_DOWN           0x3D
#define MOVEMENT_ACTION_SLIDE_RIGHT_FOOT_UP             0x3E
#define MOVEMENT_ACTION_SLIDE_RIGHT_FOOT_LEFT           0x3F
#define MOVEMENT_ACTION_SLIDE_RIGHT_FOOT_RIGHT          0x40
#define MOVEMENT_ACTION_SLIDE_LEFT_FOOT_DOWN            0x41
#define MOVEMENT_ACTION_SLIDE_LEFT_FOOT_UP              0x42
#define MOVEMENT_ACTION_SLIDE_LEFT_FOOT_LEFT            0x43
#define MOVEMENT_ACTION_SLIDE_LEFT_FOOT_RIGHT           0x44
#define MOVEMENT_ACTION_START_ANIM_IN_DIRECTION         0x45
#define MOVEMENT_ACTION_JUMP_SPECIAL_DOWN               0x46
#define MOVEMENT_ACTION_JUMP_SPECIAL_UP                 0x47
#define MOVEMENT_ACTION_JUMP_SPECIAL_LEFT               0x48
#define MOVEMENT_ACTION_JUMP_SPECIAL_RIGHT              0x49
#define MOVEMENT_ACTION_FACE_PLAYER                     0x4A
#define MOVEMENT_ACTION_FACE_AWAY_PLAYER                0x4B
#define MOVEMENT_ACTION_LOCK_FACING_DIRECTION           0x4C
#define MOVEMENT_ACTION_UNLOCK_FACING_DIRECTION         0x4D
#define MOVEMENT_ACTION_JUMP_DOWN                       0x4E
#define MOVEMENT_ACTION_JUMP_UP                         0x4F
#define MOVEMENT_ACTION_JUMP_LEFT                       0x50
#define MOVEMENT_ACTION_JUMP_RIGHT                      0x51
#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN              0x52
#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP                0x53
#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT              0x54
#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT             0x55
#define MOVEMENT_ACTION_JUMP_IN_PLACE_DOWN_UP           0x56
#define MOVEMENT_ACTION_JUMP_IN_PLACE_UP_DOWN           0x57
#define MOVEMENT_ACTION_JUMP_IN_PLACE_LEFT_RIGHT        0x58
#define MOVEMENT_ACTION_JUMP_IN_PLACE_RIGHT_LEFT        0x59

#define MOVEMENT_ACTION_SET_INVISIBLE                   0x60
#define MOVEMENT_ACTION_SET_VISIBLE                     0x61
#define MOVEMENT_ACTION_EMOTE_EXCLAMATION_MARK          0x62
#define MOVEMENT_ACTION_EMOTE_QUESTION_MARK             0x63
#define MOVEMENT_ACTION_EMOTE_CROSS                     0x64
#define MOVEMENT_ACTION_EMOTE_DOUBLE_EXCLAMATION_MARK   0x65
#define MOVEMENT_ACTION_EMOTE_HAPPY                     0x67

#define MOVEMENT_ACTION_SPIN_PAD_DOWN                   0x94
#define MOVEMENT_ACTION_SPIN_PAD_UP                     0x95
#define MOVEMENT_ACTION_SPIN_PAD_LEFT                   0x96
#define MOVEMENT_ACTION_SPIN_PAD_RIGHT                  0x97

//Not Vanilla
#define MOVEMENT_ACTION_WALK_SLOWEST_UP_BACKWARDS       0xAA
#define MOVEMENT_ACTION_WALK_SLOWEST_DOWN_BACKWARDS     0xAB
#define MOVEMENT_ACTION_WALK_SLOWEST_RIGHT_BACKWARDS    0xAC
#define MOVEMENT_ACTION_WALK_SLOWEST_LEFT_BACKWARDS     0xAD
#define MOVEMENT_ACTION_WALK_SLOW_UP_BACKWARDS          0xAE
#define MOVEMENT_ACTION_WALK_SLOW_DOWN_BACKWARDS        0xAF
#define MOVEMENT_ACTION_WALK_SLOW_RIGHT_BACKWARDS       0xB0
#define MOVEMENT_ACTION_WALK_SLOW_LEFT_BACKWARDS        0xB1
#define MOVEMENT_ACTION_WALK_NORMAL_UP_BACKWARDS        0xB2
#define MOVEMENT_ACTION_WALK_NORMAL_DOWN_BACKWARDS      0xB3
#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT_BACKWARDS     0xB4
#define MOVEMENT_ACTION_WALK_NORMAL_LEFT_BACKWARDS      0xB5
#define MOVEMENT_ACTION_WALK_FAST_UP_BACKWARDS          0xB6
#define MOVEMENT_ACTION_WALK_FAST_DOWN_BACKWARDS        0xB7
#define MOVEMENT_ACTION_WALK_FAST_RIGHT_BACKWARDS       0xB8
#define MOVEMENT_ACTION_WALK_FAST_LEFT_BACKWARDS        0xB9
#define MOVEMENT_ACTION_JUMP_2_UP_BACKWARDS             0xBA
#define MOVEMENT_ACTION_JUMP_2_DOWN_BACKWARDS           0xBB
#define MOVEMENT_ACTION_JUMP_2_RIGHT_BACKWARDS          0xBC
#define MOVEMENT_ACTION_JUMP_2_LEFT_BACKWARDS           0xBD
#define MOVEMENT_ACTION_JUMP_UP_BACKWARDS               0xBE
#define MOVEMENT_ACTION_JUMP_DOWN_BACKWARDS             0xBF
#define MOVEMENT_ACTION_JUMP_RIGHT_BACKWARDS            0xC0
#define MOVEMENT_ACTION_JUMP_LEFT_BACKWARDS             0xC1

#define MOVEMENT_ACTION_WALK_NORMAL_LEFT_DOWN_FACE_DOWN   0xC2
#define MOVEMENT_ACTION_WALK_NORMAL_LEFT_UP_FACE_UP       0xC3
#define MOVEMENT_ACTION_WALK_NORMAL_LEFT_DOWN_FACE_LEFT   0xC4
#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT_DOWN_FACE_RIGHT 0xC5
#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT_DOWN_FACE_DOWN  0xC6
#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT_UP_FACE_UP      0xC7
#define MOVEMENT_ACTION_WALK_NORMAL_LEFT_UP_FACE_LEFT     0xC8
#define MOVEMENT_ACTION_WALK_NORMAL_RIGHT_UP_FACE_RIGHT   0xC9

#define MOVEMENT_ACTION_RUN_LEFT_DOWN_FACE_DOWN           0xD2
#define MOVEMENT_ACTION_RUN_LEFT_UP_FACE_UP               0xD3
#define MOVEMENT_ACTION_RUN_LEFT_DOWN_FACE_LEFT           0xD4
#define MOVEMENT_ACTION_RUN_RIGHT_DOWN_FACE_RIGHT         0xD5
#define MOVEMENT_ACTION_RUN_RIGHT_DOWN_FACE_DOWN          0xD6
#define MOVEMENT_ACTION_RUN_RIGHT_UP_FACE_UP              0xD7
#define MOVEMENT_ACTION_RUN_LEFT_UP_FACE_LEFT             0xD8
#define MOVEMENT_ACTION_RUN_RIGHT_UP_FACE_RIGHT           0xD9

#define MOVEMENT_ACTION_WALK_FAST_LEFT_DOWN_FACE_DOWN   0xDA
#define MOVEMENT_ACTION_WALK_FAST_LEFT_UP_FACE_UP       0xDB
#define MOVEMENT_ACTION_WALK_FAST_LEFT_DOWN_FACE_LEFT   0xDC
#define MOVEMENT_ACTION_WALK_FAST_RIGHT_DOWN_FACE_RIGHT 0xDD
#define MOVEMENT_ACTION_WALK_FAST_RIGHT_DOWN_FACE_DOWN  0xDE
#define MOVEMENT_ACTION_WALK_FAST_RIGHT_UP_FACE_UP      0xDF
#define MOVEMENT_ACTION_WALK_FAST_LEFT_UP_FACE_LEFT     0xE0
#define MOVEMENT_ACTION_WALK_FAST_RIGHT_UP_FACE_RIGHT   0xE1


